Package org.python.pydev.debug.ui.actions

Source Code of org.python.pydev.debug.ui.actions.TerminateAllLaunchesAction

/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.debug.ui.actions;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.bindings.keys.KeySequence;
import org.eclipse.ui.texteditor.IUpdate;
import org.python.pydev.core.log.Log;
import org.python.pydev.editor.actions.PyAction;
import org.python.pydev.plugin.PydevPlugin;
import org.python.pydev.ui.UIConstants;

import com.aptana.shared_core.bindings.KeyBindingHelper;


public class TerminateAllLaunchesAction extends PyAction implements IUpdate {

    public TerminateAllLaunchesAction() {
        KeySequence binding = KeyBindingHelper
                .getCommandKeyBinding("org.python.pydev.debug.ui.actions.terminateAllLaunchesAction");
        String str = binding != null ? "(" + binding.format() + " when on Pydev editor)" : "(unbinded)";

        this.setImageDescriptor(PydevPlugin.getImageCache().getDescriptor(UIConstants.TERMINATE_ALL));
        this.setToolTipText("Terminate ALL." + str);

        update();
    }

    /* (non-Javadoc)
     * @see org.eclipse.ui.texteditor.IUpdate#update()
     */
    public void update() {
        ILaunch[] launches = DebugPlugin.getDefault().getLaunchManager().getLaunches();
        try {
            for (ILaunch iLaunch : launches) {
                if (!iLaunch.isTerminated()) {
                    setEnabled(true);
                    return;
                }
            }
            setEnabled(false);
        } catch (Exception e) {
            Log.log(e);
        }
    }

    public void run(IAction action) {
        Job job = new Job("Terminate all Launches") {

            @Override
            protected IStatus run(IProgressMonitor monitor) {
                ILaunch[] launches = DebugPlugin.getDefault().getLaunchManager().getLaunches();
                for (ILaunch iLaunch : launches) {
                    try {
                        if (!iLaunch.isTerminated()) {
                            iLaunch.terminate();
                        }
                    } catch (Exception e) {
                        Log.log(e);
                    }
                }
                return Status.OK_STATUS;
            }
        };
        job.setPriority(Job.INTERACTIVE);
        job.schedule();
    }

    public void run() {
        run(this);
    }

    public void dispose() {

    }

}
TOP

Related Classes of org.python.pydev.debug.ui.actions.TerminateAllLaunchesAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.